www.gusucode.com > 超声波测量以及形成图像 对相关信号进行模拟仿真 > 超声波测量以及形成图像 对相关信号进行模拟仿真/digital holograpy/prog/splice.m
function [ c,rc,centerc ] = splice( a,b,ra,rb,centera,centerb,dxy,fwsv ) %SPLICE Summary of this function goes here % Detailed explanation goes here MNa=size(a); MNb=size(b); [vax,vay]=opticimage(MNa,dxy(1),dxy(2),centera); [vbx,vby]=opticimage(MNb,dxy(1),dxy(2),centerb); vax=min(vax); vay=max(vay); vbx=min(vbx); vby=max(vby); shift=[0,round((vay-vby)./dxy(2));0,round((vbx-vax)./dxy(1))]; s1=min(shift(1,:)); s2=min(shift(2,:)); shift(1,:)=shift(1,:)-s1; shift(2,:)=shift(2,:)-s2; vax=vax+s2.*dxy(1); vay=vay-s1.*dxy(2); ma=[1,MNa(1)]+shift(1,1); mb=[1,MNb(1)]+shift(1,2); na=[1,MNa(2)]+shift(2,1); nb=[1,MNb(2)]+shift(2,2); M=max([ma,mb]); N=max([na,nb]); a1=zeros(M,N).*NaN; b1=a1; ra1=logical(zeros(M,N)); rb1=ra1; a1(ma(1):ma(2),na(1):na(2))=a; b1(mb(1):mb(2),nb(1):nb(2))=b; ra1(ma(1):ma(2),na(1):na(2))=ra; rb1(mb(1):mb(2),nb(1):nb(2))=rb; clear a b ra rb wa=ra1; wb=rb1; for n=1:length(fwsv) wa=conv2(wa,ones(fwsv(n)),'same')./(fwsv(n).^2); wb=conv2(wb,ones(fwsv(n)),'same')./(fwsv(n).^2); end common=ra1&rb1; wa=zero2one(wa).*common; wb=zero2one(wb).*common; diff=(a1-b1); diff=nanmean(diff(common)); b1=b1+diff; cav=(a1.*wa+b1.*wb)./(wa+wb); cav(~common)=0; a1(~ra1|common)=0; b1(~rb1|common)=0; c=a1+b1+cav; rc=ra1|rb1; c(~rc)=NaN; centerc=[vax,vay]+floor([N,M]./2).*[1,-1].*dxy;